<?php
class ModeloBase
{
	private $strTabelaNome;
	
	private $intCodigo;
	
	private $arrPropriedades;
	
	protected function setStrTabelaNome($strValor)
	{
		$this->strTabelaNome = $strValor;
	}
	
	protected function getStrTabelaNome()
	{
		return $this->strTabelaNome;
	}
	
	protected function setIntCodigo($intValor)
	{
		$this->intCodigo = $intValor;
	}
	
	protected function getIntCodigo()
	{
		return $this->intCodigo;
	}
	
	protected function setArrPropriedades($arrValor)
	{
		$this->arrPropriedades = $arrValor;
	}
	
	protected function getArrPropriedades()
	{
		return $this->arrPropriedades;
	}

	protected function retornarRegistro()
	{
		$strSql = "SELECT * FROM ".$this->getStrTabelaNome()
			."\n WHERE int_codigo = ".$this->getIntCodigo();
			
		$varRetorno = ConexaoControle::query($strSql);
		if ($varRetorno === false) {
			echo "Falha ao retornar registro!!";
			exit;
		}
		
		$this->preencherPropriedades($varRetorno)
	}
	
	private function preencherPropriedades($arrRetorno)
	{
		$this->arrPropriedades = array();
		foreach ($arrRetorno as $strRegistro => $strValor) {
			$arrStrRegistro = explode('_', $strRegistro);
			$this->arrPropriedades[$strRegistro] = array($arrStrRegistro[0], $strValor)
		}
	}
	
	protected function inserirRegistro()
	{
		$strSql = "INSERT INTO ".$this->getStrTabelaNome();
			."\n VALUES(";
		
		$varCodigo = $this->retornarProximoCodigo();
		if ($varCodigo === false) {
			echo "Falta o código!!";
			exit;
		}
		$strSql .= " $varCodigo";
		
		foreach ($arrPropriedades as $arrPropriedade) {
			$strSql .= "\n , ".$arrPropriedade["VALOR"];
		}
		$strSql .= "\n )";
		$varRetorno = ConexaoControle::query($strSql);
		if ($varRetorno === false) {
			echo "Falha ao inserir novo registro!!";
			exit;
		}
	}

	private function retornarProximoCodigo()
	{
		$strSql = "SELECT COALESCE(MAX(codigo),0)+1 AS CODIGO FROM ".$this->getStrTabelaNome();
		$varRetorno = ConexaoControle::query($strSql);
		if ($varRetorno === false) {
			return false;//@TODO talvez lançar uma exceção
		}
		
		if (isset($varRetorno["CODIGO"]) === true) {
			return $varRetorno["CODIGO"];
		}
		
		return false;//@TODO talvez lançar uma exceção
	}
}
?>